package com.ruoyi.psi.purchase.storage.service;

import com.ruoyi.psi.purchase.storage.domain.MaterialAcceptanceRecord;
import com.ruoyi.psi.purchase.storage.domain.PurchaseStorage;
import com.ruoyi.psi.purchase.storage.domain.PurchaseStorageList;

import java.util.List;

/**
 * 采购订单入库
 * 业务层
 */
public interface IPurchaseStorageService {
    /**
     * 采购订单入库查询
     * @param purchaseStorage
     * @return
     */
    public List<PurchaseStorage> selectPurchaseStorageList(PurchaseStorage purchaseStorage);

    /**
     * 按编号查询
     * @param purchaseStorageId 采购订单入库编号
     * @return
     */
    public PurchaseStorage selectPurchaseStorageById(String purchaseStorageId);

    /**
     * 采购订单入库新增
     * @param purchaseStorage
     * @return
     */
    public int insertPurchaseStorage(PurchaseStorage purchaseStorage) throws Exception;

    /**
     * 采购订单入库更新
     * @param purchaseStorage
     * @return
     */
    public int updatePurchaseStorage(PurchaseStorage purchaseStorage) throws Exception;

    /**
     * 更新采购订单入库删除标志位
     * @param purchaseStorage
     * @return
     */
    public int updatePurchaseStorageDeleteFlag(PurchaseStorage purchaseStorage);

    /**
     * 采购订单入库详细查询
     * @param purchaseStorageList
     * @return
     */
    public List<PurchaseStorageList> selectPurchaseStorageListList(PurchaseStorageList purchaseStorageList);

    /**
     * 查询采购订单入库对应的所有产品详细
     * @param purchaseStorageId 采购订单入库编号
     * @return
     */
    public List<PurchaseStorageList> selectPurchaseStorageListListById(String purchaseStorageId);
    /**
     * 采购入库新增时查询采购订单对应信息
     * @param purchaseOrderId
     * @return
     */
    public List<PurchaseStorageList> selectPurchaseOrderListForStorage(String purchaseOrderId);
    /**
     * 查询采购订单入库对应的指定产品详细
     * @param purchaseStorageId
     * @return
     */
    public PurchaseStorageList  selectPurchaseStorageListById(String purchaseStorageId, String produceId);

//    /**
//     * 物料验收看板显示类
//     * @return
//     */
//    public List<MaterialAcceptanceRecord> selectProduceForKanBan();
}
